<?php

/**
 * Pour utiliser cette fonctionnalitée, vous devez inclure le page "broswer.php" et appeller
 * la fonction "BrwsGallerie($Repertoire);"  $Repertoire = le chemin du répertoire parent, par exemple :  "./Data". 
 * 
 * Copyright (C) 2013 SHESHIVARI Adelina & ROCHAT Julien 
 * 
 * This file is part of Mediathor.
 * 
 * Mediathor is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 2 of the
 * License, or (at your option) any later version.
 * 
 * Mediathor is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * 
 * See the GNU General Public License for more details. You should have received a copy of the GNU
 * General Public License along with Mediathor. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */

/**
 * Appelle à toute les fonctions pour afficher la gallerie 
 * @return = Affiche la gelerie en entier
 * @param = Chemin du répertoire parent 
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsGallerie($Repertoire) {
    $Parent = '';
    $Lien = '';

    if (isset($_GET['Repertoire'])) {
        $NbRep = strlen($Repertoire);
        $Parent = $Repertoire;
        $Repertoire = $_GET['Repertoire'];
        $Lien = substr($Repertoire, 0, $NbRep);
    }

    if ($Parent != $Lien) {
        $Repertoire = $Parent;
    }
  
    $Repertoire = BrwsNettoyerChaine($Repertoire);
    $Repertoire = BrwsSecuriteLien($Repertoire);    
    $Gallerie = BrwsAfficherArborescence($Repertoire);
    $Gallerie .= BrwsParcourirArborescence($Repertoire);
    
    Return $Gallerie;
}

/**
 * Supprime les "/" de trop dans l'historique de l'utilisateur 
 * @return = les répertoires précedants
 * @param = $Chaine = l'arborescence
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsNettoyerChaine($Chaine) {
    $Masque = array('///', '//');
    $Replace = array('/', '/');
    $Count = true;
    while ($Count == true) {
        $Chaine = str_replace($Masque, $Replace, $Chaine, $Count);
    }
    return $Chaine;
}

/**
 * Permet de retourner en arrière dans l'arborescence
 * @return = le chemin parcouru de l'utilisateur
 * @param = $Chemin = le chemin parcourut par l'utilisateur
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsAfficherArborescence($Chemin) {
    $Arborescence = '';

    if ($Chemin[strlen($Chemin) - 1] == '/') {
        $Chemin = substr($Chemin, 0, -1);
    }

    $Chemin = substr($Chemin, 1);
    $Chemin = explode("/", $Chemin);
    $Lien = '?Repertoire=.';

    for ($i = 1; $i < count($Chemin); $i++) {
        //Met en majuscule la première lettre de la chaine
        $Lien .= '/' . $Chemin[$i];
        $Arborescence .= "<a href='$Lien'>" . ucfirst($Chemin[$i]) . "</a>";
        if ($i < count($Chemin) - 1) {
            $Arborescence .= ' > ';
        } else {
            $Arborescence .= ' > <br />';
        }
    }
    return $Arborescence;
}


/**
 * Securise la modification des liens en GET
 * @return = le 1er lien correcte trouvé de l 'utilisateur
 * @param = $Chemin = le chemin parcourut par l'utilisateur
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsSecuriteLien($Chemin) {
    $Lien = '.';
    $Chemin = explode("/", $Chemin);
    for ($i = 1; $i < count($Chemin); $i++) {
        //Met en majuscule la première lettre de la chaine
        if (file_exists($Lien . '/' . $Chemin[$i])) {
            $Lien .= '/' . $Chemin[$i];
        } else {
            break;
        }
    }
   return $Lien;
}

/**
 * Permet de parcourir l'arborescence des dossiers
 * @return = Affichage de l'arborescence avec les images et les extensions
 * @param = $Repertoire = Le chemin du répertoire 
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsParcourirArborescence($Repertoire) {
    $ExtensionImage = array('.png', '.gif', '.jpg', '.jpeg');
    $ExtensionVideo = array('.mp4');
    $ExtensionMusique = array('.mp3');
    $Corp = "";

    if (file_exists($Repertoire)) {
        $MonRepertoire = opendir($Repertoire) or die('Erreur');
        //On parcourt le contenu du répertoire.
        while ($Contenu = @readdir($MonRepertoire)) {
            //Cache les . du cheminiment des répertoires.
            if ($Contenu != "." && $Contenu != "..") {


                $Corp .= "<div id='Fichier'>
                            <div id='Contenu'>";
                if (is_dir($Repertoire . '/' . $Contenu)) {
                    $Corp .= "<img width='60' height='60' src='images/dossier.png' /><br />
                              <a href='?Repertoire=$Repertoire/$Contenu'>" . BrwsAbregeNom($Contenu) . "</a>";
                } else {


                    //On récupère l'extension
                    $Extension = strrchr($Contenu, '.');
                    $Nom = substr($Contenu, 0, strrpos($Contenu, '.'));
                    $NomAfficher = BrwsAbregeNom($Nom, $Extension);
                    $Ext = substr($Extension, 1);

                    if (in_array($Extension, $ExtensionImage)) { //Si l'extension est dans le tableau
                        $Corp .= "<img width='60' height='60' src='./$Repertoire/$Contenu' /><br />
                                 <a href='?Repertoire=$Repertoire/&Fichier=$Nom&Ext=$Ext'>$NomAfficher</a> ";
                    } else if (in_array($Extension, $ExtensionVideo)) { //Si l'extension est dans le tableau
                        $Corp .= "<img width='60' height='60' src='images/video.png' /><br />
                                 <a href='?Repertoire=$Repertoire/&Fichier=$Nom&Ext=$Ext'>$NomAfficher</a>";
                    } else if (in_array($Extension, $ExtensionMusique)) { //Si l'extension est dans le tableau
                        $Corp .= "<img width='48' height='60' src='images/musique.png' /><br />
                                 <a href='?Repertoire=$Repertoire/&Fichier=$Nom&Ext=$Ext'>$NomAfficher</a>";
                    } else {
                        $Corp .= "<img width='60' height='60' src='images/censure.jpg' /><br />
                                 <i><font color='red'>Format non compris</font></i>";
                    }
                }
                $Corp .= "</div>
                        </div>";
            }
        }
        closedir($MonRepertoire);
    } else {
        $Corp = "<br /> <center><img height='500' width='540' src='images/404.jpg' /></center>";
    }
    return $Corp;
}

/**
 * Permet d'abreger les noms de fichier & dossier
 * @return = Nom abregé
 * @param = $Nom = Nom du fichier || dossier $Extension = Extension du fichier
 * Authors: SHESHIVARI Adelina & ROCHAT Julien
 */
function BrwsAbregeNom($Nom, $Extension = '') {

    $Mot = '';
    $Retour = '';
    if (strlen($Nom) + strlen($Extension) > 22) {
        $Nom = substr($Nom, 0, 22 - strlen($Extension));
        $Nom .= '...';
    }
    $Nom .= $Extension . ' ';
    $Longeur = strlen($Nom);

    for ($i = 0; $i < $Longeur; $i++) {
        if ($Nom[$i] == ' ') {
            if (strlen($Mot) > 14) {
                $Mot = substr_replace($Mot, " ", strlen($Mot) / 2, 0);
            }
            $Retour .= ' ' . $Mot;
            $Mot = '';
        } else {
            $Mot .= $Nom[$i];
        }
    }
    return $Retour;
}

?>
